NumPy 和 Pandas (数据分析)
1. 概述
NumPy 和 Pandas 是 Python 中用于数据分析的两个核心库。NumPy 提供了高效的多维数组对象和用于处理这些数组的工具,而 Pandas 则提供了高级数据结构和数据分析工具,使得数据操作和分析变得更加简单和高效。
2. NumPy 简介
2.1 安装 NumPy
首先,我们需要安装 NumPy。可以使用 pip 进行安装:
pip install numpy
2.2 NumPy 数组
NumPy 的核心是 ndarray 对象,即多维数组。以下是创建和操作 NumPy 数组的基本示例:
import numpy as np
# 创建一个一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print("一维数组:", arr1)
# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:\n", arr2)
# 数组的形状
print("数组的形状:", arr2.shape)
# 数组的维度
print("数组的维度:", arr2.ndim)
# 数组的数据类型
print("数组的数据类型:", arr2.dtype)
2.3 数组操作
NumPy 提供了丰富的数组操作功能,包括数学运算、统计运算、逻辑运算等。
# 数组加法
arr3 = arr1 + 10
print("数组加法:", arr3)
# 数组乘法
arr4 = arr2 * 2
print("数组乘法:\n", arr4)
# 数组求和
print("数组求和:", np.sum(arr2))
# 数组平均值
print("数组平均值:", np.mean(arr2))
2.4 实践练习
- 创建一个三维数组,并计算其总和和平均值。
- 使用 NumPy 生成一个随机数组,并进行排序。
3. Pandas 简介
3.1 安装 Pandas
同样地,我们需要安装 Pandas:
pip install pandas
3.2 Pandas 数据结构
Pandas 主要提供了两种数据结构:Series 和 DataFrame。
3.2.1 Series
Series 是一维数组,类似于带标签的数组。
import pandas as pd
# 创建一个 Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print("Series:\n", s)
3.2.2 DataFrame
DataFrame 是二维表格数据结构,类似于电子表格或 SQL 表。
# 创建一个 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [24, 27, 22, 32],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
print("DataFrame:\n", df)
3.3 数据操作
Pandas 提供了丰富的数据操作功能,包括数据选择、过滤、排序、分组等。
# 选择列
print("选择列:\n", df['Name'])
# 过滤数据
print("过滤数据:\n", df[df['Age'] > 25])
# 排序数据
print("排序数据:\n", df.sort_values(by='Age'))
# 分组数据
print("分组数据:\n", df.groupby('City').size())
3.4 实践练习
- 创建一个包含学生姓名、年龄和成绩的 DataFrame,并按成绩排序。
- 使用 Pandas 读取一个 CSV 文件,并进行数据清洗和分析。
4. NumPy 和 Pandas 结合使用
NumPy 和 Pandas 可以很好地结合使用,NumPy 提供高效的数组操作,而 Pandas 提供高级的数据结构和数据分析工具。
# 创建一个 DataFrame,其中包含 NumPy 数组
data = {
'A': np.random.rand(5),
'B': np.random.rand(5),
'C': np.random.rand(5)
}
df = pd.DataFrame(data)
print("DataFrame:\n", df)
# 使用 NumPy 进行数学运算
df['D'] = np.sqrt(df['A'] ** 2 + df['B'] ** 2)
print("添加新列:\n", df)
5. 总结
NumPy 和 Pandas 是 Python 数据分析的两大基石。NumPy 提供了高效的多维数组操作,而 Pandas 提供了高级的数据结构和数据分析工具。通过结合使用这两个库,可以轻松地进行复杂的数据操作和分析。
6. 实践练习答案
6.1 NumPy 练习答案
# 1. 创建一个三维数组,并计算其总和和平均值
arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print("三维数组:\n", arr3d)
print("总和:", np.sum(arr3d))
print("平均值:", np.mean(arr3d))
# 2. 使用 NumPy 生成一个随机数组,并进行排序
random_arr = np.random.rand(10)
sorted_arr = np.sort(random_arr)
print("排序后的数组:", sorted_arr)
6.2 Pandas 练习答案
# 1. 创建一个包含学生姓名、年龄和成绩的 DataFrame,并按成绩排序
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [24, 27, 22, 32],
'Score': [85, 90, 78, 95]
}
df = pd.DataFrame(data)
sorted_df = df.sort_values(by='Score', ascending=False)
print("按成绩排序:\n", sorted_df)
# 2. 使用 Pandas 读取一个 CSV 文件,并进行数据清洗和分析
df = pd.read_csv('data.csv')
print("读取的 CSV 文件:\n", df.head())
# 数据清洗
df = df.dropna() # 删除缺失值
df['Date'] = pd.to_datetime(df['Date']) # 转换日期格式
# 数据分析
print("数据分析:\n", df.describe())
通过这些练习,你可以更好地理解和掌握 NumPy 和 Pandas 的使用。